home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
cm_mf.arc
/
CMMAN.MF
< prev
next >
Wrap
Text File
|
1989-01-30
|
29KB
|
643 lines
% Variants of Computer Modern, specially for the TeX/METAFONT manuals
if unknown cmbase: input cmbase fi
mode_setup;
def generate suffix t= enddef;
inner cmchar;
font_size 10pt#;
font_identifier "CMMAN";
font_coding_scheme "PI";
input cmtt10; font_setup;
cmchar "Cross between 0 and O";
beginchar("0",9u#,fig_height#,0);
italcorr fig_height#*slant-.5u#;
adjust_fit(0,0);
penpos1(vair,90); penpos3(vair,-90); penpos2(curve,180); penpos4(curve,0);
superness:=.77;
x2r=round max(.7u,1.45u-.5curve); x4r=w-x2r; x1=x3=.5w;
y1r=h+o; y3r=-o; y2=y4=.5h-vair_corr; y2l:=y4l:=.52h;
penstroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) & pulled_arc.e(4,1) & cycle; % bowl
penlabels(1,2,3,4); endchar;
input cmssq8; slant:=sind 12/cosd 12; font_setup;
cmchar "Lowercase Greek beta";
beginchar(oct"014",9.5u#,asc_height#,desc_depth#);
italcorr .5[x_height#,asc_height#]*slant-u#;
adjust_fit(0,0); pickup fine.nib;
pos0(hair,180); pos1(hair,180); pos2(vair,90);
pos3(stem,0); pos4(vair,-90); pos5(hair,-180);
pos6(vair,-270); pos7(curve,-360); pos8(vair,-450); pos9(hair,-540);
x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w+.25u;
rt x3r=hround(w-1.5u); rt x7r=hround(w-1.5u+.5curve); rt x5l=hround(x4-u);
bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.5[y6,y8];
if y6l<y4l: y6l:=y4l:=y5; fi
filldraw stroke z0e---z1e...pulled_arc.e(2,3)
& pulled_arc.e(3,4)...{up}z5e; % stem and upper bowl
filldraw stroke z5e{up}...pulled_arc.e(6,7)
& pulled_arc.e(7,8)...{up}z9e; % lower bowl
math_fit(desc_depth#*slant+.5hair#-u#,.7x_height#*slant+.5curve#-1.5u#);
penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
cmchar "Lowercase thorn";
beginchar(oct"015",10u#+serif_fit#,asc_height#,desc_depth#);
italcorr .5x_height#*slant+min(.5curve#-.85u#,-.1u#);
adjust_fit(serif_fit#,0);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
lft x1l=hround(2.5u-.5stem'); top y1=h;
numeric edge; edge=rt x2r;
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
pos4(vair',90); pos5(curve,0); pos6(vair,-90);
rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height];
x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
x6=x3; bot y6r=-oo;
(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x5r,x4]);
filldraw stroke z3e{up}...{right}z4e&super_arc.e(4,5)
&z5e{down}...{5(x6-x5),y6-y5}z6e; % bowl
y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l));
pickup tiny.nib; bot y2=-d;
filldraw stroke z1e--z0'e--z0e--z2e; % stem
pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
z7'=z2; x8l=x7'l; bot y8=0;
filldraw stroke z7'e--z8e; % point
if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif
dish_serif(2,0,b,1/3,jut,c,1/3,0); fi % lower serif
penlabels(0,1,2,3,4,5,6,8); endchar;
input cmr10; font_setup;
message "Parentheses";
code:=ASCII "0"; % the characters will be 123456789:
for c=0,1,2,4,infinity:
cmchar "Left paren with curl "&decimal c;
beginchar(incr code,7u#,body_height#,paren_depth#);
italcorr body_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
rt x1r=rt x3r=round(w-u); lft x2l=round(x1-4u if monospace: +4/3u fi);
top y1=h; y2=.5[y1,y3]=math_axis;
filldraw stroke z1e{curl c}..z2e..{curl c}z3e; % arc
penlabels(1,2,3); endchar;
cmchar "Right paren with curl "&decimal c;
beginchar(incr code,7u#,body_height#,paren_depth#);
italcorr math_axis#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,0); pos2(.75[hair,stem],0); pos3(vair,0);
lft x1l=lft x3l=round u; rt x2r=round(x1+4u if monospace: -4/3u fi);
top y1=h; y2=.5[y1,y3]=math_axis;
filldraw stroke z1e{curl c}..z2e..{curl c}z3e; % arc
penlabels(1,2,3); endchar;
endfor
cmchar "Variant letter g";
beginchar("g",10u#+serif_fit#,x_height#,desc_depth#);
italcorr x_height#*slant-serif_fit#+.5stem#-2u# if serifs:+.5u# fi;
adjust_fit(0,serif_fit# if serifs: -.5u# fi);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2;
rt x1r=hround(w-2.5u+.5stem');
numeric edge; edge=lft x2l;
path edge_path; edge_path=(edge,h)--(edge,0);
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0);
pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height;
x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo;
lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height;
x6l=x4l-.2u; bot y6r=vround 1/3vair;
lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair);
(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]);
(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]);
filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5)
&super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl
y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l));
y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l));
pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi;
filldraw stroke z1e--z0'e--z0e--z2e; % stem
pickup crisp.nib;
pos8(hround(hair-stem_corr),0); pos7'(stem',0);
z7'=z1; x8r=x7'r; top y8=h+oo;
filldraw stroke z7'e--z8e; % point
if serifs: pickup tiny.nib;
pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1;
pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare;
pos11(flare,-180); z11r=z10r;
bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail
else: pickup fine.nib; pos2'(stem,0); z2'=z2;
z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0);
pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1;
pos10(.5[vair,flare],-90); lft x10=hround 1.25u;
y10r=good.y -5/6d; y10l:=good.y y10l;
filldraw stroke z2'e..z2''e&super_arc.e(2'',9)
& term.e(9,10,left,.9,4); fi % tail
penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar;
input cmtt9; font_setup;
cmchar "Variant letter g";
beginchar("x",10u#+serif_fit#,x_height#,desc_depth#);
italcorr x_height#*slant-serif_fit#+.5stem#-2u# if serifs:+.5u# fi;
adjust_fit(0,serif_fit# if serifs: -.5u# fi);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2;
rt x1r=hround(w-2.5u+.5stem');
numeric edge; edge=lft x2l;
path edge_path; edge_path=(edge,h)--(edge,0);
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0);
pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height;
x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo;
lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height;
x6l=x4l-.2u; bot y6r=vround 1/3vair;
lft x7l=edge; y7=min(y3,y6+y4-y3+.6vair);
(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]);
(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]);
filldraw stroke z3e{up}...{left}z4e&super_arc.e(4,5)
&super_arc.e(5,6)&z6e{right}...{up}z7e; % bowl
y1=ypart(edge_path intersectionpoint(z3l{up}...{left}z4l));
y0=ypart(edge_path intersectionpoint(z7l{down}...{left}z6l));
pickup tiny.nib; bot y2=if serifs: -.25d else: 0 fi;
filldraw stroke z1e--z0'e--z0e--z2e; % stem
pickup crisp.nib;
pos8(hround(hair-stem_corr),0); pos7'(stem',0);
z7'=z1; x8r=x7'r; top y8=h+oo;
filldraw stroke z7'e--z8e; % point
if serifs: pickup tiny.nib;
pos9(vair,-90); x9=.5[x2,x10]; bot y9r=-d-o-1;
pos10(hair,-180); lft x10r=hround u; y10=-.75d+.5flare;
pos11(flare,-180); z11r=z10r;
bulb(9,10,11); filldraw stroke super_arc.e(2,9); % tail
else: pickup fine.nib; pos2'(stem,0); z2'=z2;
z2''r=z2'r; z2''=z2'; z2''l=(x2'l,0);
pos9(vair,-90); x9=4.5u; bot y9r=-d-o-1;
pos10(.5[vair,flare],-90); lft x10=hround 1.25u;
y10r=good.y -5/6d; y10l:=good.y y10l;
filldraw stroke z2'e..z2''e&super_arc.e(2'',9)
& term.e(9,10,left,.9,4); fi % tail
penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar;
input cmbx9; font_setup;
cmchar "Variant letter g";
beginchar("y",10u#+serif_fit#,x_height#,desc_depth#);
italcorr x_height#*slant-serif_fit#+.5stem#-2u# if serifs:+.5u# fi;
adjust_fit(0,serif_fit# if serifs: -.5u# fi);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2;
rt x1r=hround(w-2.5u+.5stem');
numeric edge; edge=lft x2l;
path edge_path; edge_path=(edge,h)--(edge,0);
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0);
pos4(vair,90); pos5(curve,180); pos6(vair